home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 24 / Amiga Format AFCD24 (Feb 1998, Issue 108).iso / -in_the_mag- / emulation / macos / uae069b2.src.cpt.hqx / UAE069ß2.SRC.CPT / uae069fl2.src / blit.h < prev    next >
Text File  |  1997-06-14  |  13KB  |  519 lines

  1. static __inline__ uae_u32 blit_func(uae_u32 srca, uae_u32 srcb, uae_u32 srcc, uae_u8 mt)
  2. {
  3. switch(mt){
  4. case 0x0:
  5.     return 0;
  6. case 0x1:
  7.     return ~(srcc | srcb | srca);
  8. case 0x2:
  9.     return (srcc & ~(srcb | srca));
  10. case 0x3:
  11.     return ~(srcb | srca);
  12. case 0x4:
  13.     return (srcb & ~(srcc | srca));
  14. case 0x5:
  15.     return ~(srcc | srca);
  16. case 0x6:
  17.     return (~srca & (srcb ^ srcc));
  18. case 0x7:
  19.     return ~(srca | (srcc & srcb));
  20. case 0x8:
  21.     return (srcc & srcb & ~srca);
  22. case 0x9:
  23.     return ~(srca | (srcb ^ srcc));
  24. case 0xa:
  25.     return (srcc & ~srca);
  26. case 0xb:
  27.     return ~(srca | (~srcc & srcb));
  28. case 0xc:
  29.     return (srcb & ~srca);
  30. case 0xd:
  31.     return ~(srca | (~srcb & srcc));
  32. case 0xe:
  33.     return (~srca & (srcb | srcc));
  34. case 0xf:
  35.     return ~srca;
  36. case 0x10:
  37.     return (srca & ~(srcc | srcb));
  38. case 0x11:
  39.     return ~(srcc | srcb);
  40. case 0x12:
  41.     return (~srcb & (srca ^ srcc));
  42. case 0x13:
  43.     return ~(srcb | (srcc & srca));
  44. case 0x14:
  45.     return (~srcc & (srca ^ srcb));
  46. case 0x15:
  47.     return ~(srcc | (srcb & srca));
  48. case 0x16:
  49.     return ((~srca & (srcb ^ srcc)) | ~(srcc | srcb | ~srca));
  50. case 0x17:
  51.     return ~((srcb | srca) & (srcc | (srcb & srca)));
  52. case 0x18:
  53.     return ((srcc & srcb & ~srca) | ~(srcc | srcb | ~srca));
  54. case 0x19:
  55.     return ~((srcc | srcb) & (srca | ~(srcc & srcb)));
  56. case 0x1a:
  57.     return ((srcc & ~srca) | ~(srcc | srcb | ~srca));
  58. case 0x1b:
  59.     return ~((srcb | (srcc & srca)) & (~srcc | srca));
  60. case 0x1c:
  61.     return ((srcb & ~srca) | ~(srcc | srcb | ~srca));
  62. case 0x1d:
  63.     return ~((srcc | (srcb & srca)) & (~srcb | srca));
  64. case 0x1e:
  65.     return (srca ^ (srcb | srcc));
  66. case 0x1f:
  67.     return ~(srca & (srcc | srcb));
  68. case 0x20:
  69.     return (srcc & ~srcb & srca);
  70. case 0x21:
  71.     return ~(srcb | (srca ^ srcc));
  72. case 0x22:
  73.     return (srcc & ~srcb);
  74. case 0x23:
  75.     return ~(srcb | (~srcc & srca));
  76. case 0x24:
  77.     return (~(srcc | ~srcb | srca) | (srcc & ~srcb & srca));
  78. case 0x25:
  79.     return ~((srcc | srca) & (srcb | ~(srcc & srca)));
  80. case 0x26:
  81.     return ((srcc & ~srcb) | ~(srcc | ~srcb | srca));
  82. case 0x27:
  83.     return ~((srcb | (~srcc & srca)) & (srcc | srca));
  84. case 0x28:
  85.     return (srcc & (srca ^ srcb));
  86. case 0x29:
  87.     return (~(srcc | srcb | srca) | (srcc & (srca ^ srcb)));
  88. case 0x2a:
  89.     return (srcc & ~(srcb & srca));
  90. case 0x2b:
  91.     return (~(srcb | srca) | (srcc & ~(srcb & srca)));
  92. case 0x2c:
  93.     return ((srcb & ~srca) | (srcc & ~(srcb | ~srca)));
  94. case 0x2d:
  95.     return (srca ^ (srcb | ~srcc));
  96. case 0x2e:
  97.     return ((srcc & ~(srcb & srca)) | (srcb & ~srca));
  98. case 0x2f:
  99.     return ~(srca & (~srcc | srcb));
  100. case 0x30:
  101.     return (~srcb & srca);
  102. case 0x31:
  103.     return ~(srcb | (~srca & srcc));
  104. case 0x32:
  105.     return (~srcb & (srca | srcc));
  106. case 0x33:
  107.     return ~srcb;
  108. case 0x34:
  109.     return (~(srcc | ~srcb | srca) | (~srcb & srca));
  110. case 0x35:
  111.     return ~((srcc | srca) & (srcb | ~srca));
  112. case 0x36:
  113.     return (srcb ^ (srca | srcc));
  114. case 0x37:
  115.     return ~(srcb & (srcc | srca));
  116. case 0x38:
  117.     return ((srcc & srcb & ~srca) | ~(srcb | ~srca));
  118. case 0x39:
  119.     return (srcb ^ (srca | ~srcc));
  120. case 0x3a:
  121.     return ((srcc & ~srca) | ~(srcb | ~srca));
  122. case 0x3b:
  123.     return ~(srcb & (~srcc | srca));
  124. case 0x3c:
  125.     return (srcb ^ srca);
  126. case 0x3d:
  127.     return (~(srcc | srca) | (srcb ^ srca));
  128. case 0x3e:
  129.     return ((srcc & ~srca) | (srcb ^ srca));
  130. case 0x3f:
  131.     return ~(srca & srcb);
  132. case 0x40:
  133.     return (~srcc & srcb & srca);
  134. case 0x41:
  135.     return ~(srcc | (srca ^ srcb));
  136. case 0x42:
  137.     return (~(~srcc | srcb | srca) | (~srcc & srcb & srca));
  138. case 0x43:
  139.     return ~((srcb | srca) & (srcc | ~(srcb & srca)));
  140. case 0x44:
  141.     return (~srcc & srcb);
  142. case 0x45:
  143.     return ~(srcc | (~srcb & srca));
  144. case 0x46:
  145.     return (~(~srcc | srcb | srca) | (~srcc & srcb));
  146. case 0x47:
  147.     return ~((srcb | srca) & (srcc | (~srcb & srca)));
  148. case 0x48:
  149.     return (srcb & (srca ^ srcc));
  150. case 0x49:
  151.     return (~(srcc | srcb | srca) | (srcb & (srca ^ srcc)));
  152. case 0x4a:
  153.     return (~(~srcc | srca) | (~srcc & srcb & srca));
  154. case 0x4b:
  155.     return (srca ^ (srcc | ~srcb));
  156. case 0x4c:
  157.     return (srcb & ~(srcc & srca));
  158. case 0x4d:
  159.     return (~(srcc | srca) | (srcb & ~(srcc & srca)));
  160. case 0x4e:
  161.     return ((srcc & ~srca) | (srcb & ~(srcc & srca)));
  162. case 0x4f:
  163.     return ~(srca & (srcc | ~srcb));
  164. case 0x50:
  165.     return (~srcc & srca);
  166. case 0x51:
  167.     return ~(srcc | (~srca & srcb));
  168. case 0x52:
  169.     return (~(~srcc | srcb | srca) | (~srcc & srca));
  170. case 0x53:
  171.     return ~((srcb | srca) & (srcc | ~srca));
  172. case 0x54:
  173.     return (~srcc & (srca | srcb));
  174. case 0x55:
  175.     return ~srcc;
  176. case 0x56:
  177.     return (srcc ^ (srcb | srca));
  178. case 0x57:
  179.     return ~((srcb | srca) & srcc);
  180. case 0x58:
  181.     return ((srcc & srcb & ~srca) | ~(srcc | ~srca));
  182. case 0x59:
  183.     return (srcc ^ (srca | ~srcb));
  184. case 0x5a:
  185.     return (srcc ^ srca);
  186. case 0x5b:
  187.     return (~(srcb | srca) | (srcc ^ srca));
  188. case 0x5c:
  189.     return ((srcb & ~srca) | ~(srcc | ~srca));
  190. case 0x5d:
  191.     return ~(srcc & (~srcb | srca));
  192. case 0x5e:
  193.     return ((srcb & ~srca) | (srcc ^ srca));
  194. case 0x5f:
  195.     return ~(srca & srcc);
  196. case 0x60:
  197.     return (srca & (srcb ^ srcc));
  198. case 0x61:
  199.     return (~(srcc | srcb | srca) | (srca & (srcb ^ srcc)));
  200. case 0x62:
  201.     return (~(~srcc | srcb) | (~srcc & srcb & srca));
  202. case 0x63:
  203.     return (srcb ^ (srcc | ~srca));
  204. case 0x64:
  205.     return (~(srcc | ~srcb) | (srcc & ~srcb & srca));
  206. case 0x65:
  207.     return (srcc ^ (srcb | ~srca));
  208. case 0x66:
  209.     return (srcc ^ srcb);
  210. case 0x67:
  211.     return (~(srca | (srcc & srcb)) | (srcc ^ srcb));
  212. case 0x68:
  213.     return ((srcc & (srca ^ srcb)) | (~srcc & srcb & srca));
  214. case 0x69:
  215.     return ~(srcc ^ srca ^ srcb);
  216. case 0x6a:
  217.     return (srcc ^ (srca & srcb));
  218. case 0x6b:
  219.     return (~(srcb | srca) | (srcc ^ (srca & srcb)));
  220. case 0x6c:
  221.     return (srcb ^ (srca & srcc));
  222. case 0x6d:
  223.     return (~(srcc | srca) | (srcb ^ (srca & srcc)));
  224. case 0x6e:
  225.     return ((~srca & (srcb | srcc)) | (srcc ^ srcb));
  226. case 0x6f:
  227.     return (~srca | (srcc ^ srcb));
  228. case 0x70:
  229.     return (srca & ~(srcc & srcb));
  230. case 0x71:
  231.     return (~(srcc | srcb) | (srca & ~(srcc & srcb)));
  232. case 0x72:
  233.     return ((srcc & ~srcb) | (srca & ~(srcc & srcb)));
  234. case 0x73:
  235.     return ~(srcb & (srcc | ~srca));
  236. case 0x74:
  237.     return (~(srcc | ~srcb) | (~srcb & srca));
  238. case 0x75:
  239.     return ~(srcc & (srcb | ~srca));
  240. case 0x76:
  241.     return ((~srcb & srca) | (srcc ^ srcb));
  242. case 0x77:
  243.     return ~(srcb & srcc);
  244. case 0x78:
  245.     return (srca ^ (srcb & srcc));
  246. case 0x79:
  247.     return (~(srcc | srcb) | (srca ^ (srcb & srcc)));
  248. case 0x7a:
  249.     return ((~srcb & srca) | (srcc ^ srca));
  250. case 0x7b:
  251.     return (~srcb | (srcc ^ srca));
  252. case 0x7c:
  253.     return ((~srcc & srca) | (srcb ^ srca));
  254. case 0x7d:
  255.     return (~srcc | (srcb ^ srca));
  256. case 0x7e:
  257.     return ((~srca & (srcb | srcc)) | ~(~srca | (srcc & srcb)));
  258. case 0x7f:
  259.     return ~(srca & srcb & srcc);
  260. case 0x80:
  261.     return (srcc & srcb & srca);
  262. case 0x81:
  263.     return (~(srcc | srcb | srca) | (srcc & srcb & srca));
  264. case 0x82:
  265.     return (srcc & ~(srca ^ srcb));
  266. case 0x83:
  267.     return (~(srcb | srca) | (srcc & srcb & srca));
  268. case 0x84:
  269.     return (srcb & ~(srca ^ srcc));
  270. case 0x85:
  271.     return (~(srcc | srca) | (srcc & srcb & srca));
  272. case 0x86:
  273.     return ((~srca & (srcb ^ srcc)) | (srcc & srcb & srca));
  274. case 0x87:
  275.     return ~(srca ^ (srcb & srcc));
  276. case 0x88:
  277.     return (srcc & srcb);
  278. case 0x89:
  279.     return (~(srcc | srcb | srca) | (srcc & srcb));
  280. case 0x8a:
  281.     return (srcc & (srcb | ~srca));
  282. case 0x8b:
  283.     return (~(srca | (~srcc & srcb)) | (srcc & srcb));
  284. case 0x8c:
  285.     return (srcb & (srcc | ~srca));
  286. case 0x8d:
  287.     return (~(srca | (~srcb & srcc)) | (srcc & srcb));
  288. case 0x8e:
  289.     return ((srcc & ~srca) | (srcb & (srcc | ~srca)));
  290. case 0x8f:
  291.     return (~srca | (srcc & srcb));
  292. case 0x90:
  293.     return (srca & ~(srcb ^ srcc));
  294. case 0x91:
  295.     return (~(srcc | srcb) | (srcc & srcb & srca));
  296. case 0x92:
  297.     return ((~srcb & (srca ^ srcc)) | (srcc & srcb & srca));
  298. case 0x93:
  299.     return ~(srcb ^ (srca & srcc));
  300. case 0x94:
  301.     return ((~srcc & (srca ^ srcb)) | (srcc & srcb & srca));
  302. case 0x95:
  303.     return ~(srcc ^ (srca & srcb));
  304. case 0x96:
  305.     return (srcc ^ srca ^ srcb);
  306. case 0x97:
  307.     return ~((srcb | srca) & (srcc ^ (srca & srcb)));
  308. case 0x98:
  309.     return ((srcc & srcb) | (srca & ~(srcc | srcb)));
  310. case 0x99:
  311.     return ~(srcc ^ srcb);
  312. case 0x9a:
  313.     return (srcc ^ (srca & ~srcb));
  314. case 0x9b:
  315.     return ~((srca | (~srcc & srcb)) & (srcc ^ srcb));
  316. case 0x9c:
  317.     return (srcb ^ (srca & ~srcc));
  318. case 0x9d:
  319.     return ~((srca | (~srcb & srcc)) & (srcc ^ srcb));
  320. case 0x9e:
  321.     return ((srcc & srcb) | (srca ^ (srcb | srcc)));
  322. case 0x9f:
  323.     return ~(srca & (srcc ^ srcb));
  324. case 0xa0:
  325.     return (srcc & srca);
  326. case 0xa1:
  327.     return (~(srcc | srcb | srca) | (srcc & srca));
  328. case 0xa2:
  329.     return (srcc & (srca | ~srcb));
  330. case 0xa3:
  331.     return (~(srcb | srca) | (srcc & srca));
  332. case 0xa4:
  333.     return ((srcb & ~(srcc | srca)) | (srcc & srca));
  334. case 0xa5:
  335.     return ~(srcc ^ srca);
  336. case 0xa6:
  337.     return (srcc ^ (srcb & ~srca));
  338. case 0xa7:
  339.     return ~((srcb | srca) & (srcc ^ srca));
  340. case 0xa8:
  341.     return (srcc & (srca | srcb));
  342. case 0xa9:
  343.     return ~(srcc ^ (srcb | srca));
  344. case 0xaa:
  345.     return srcc;
  346. case 0xab:
  347.     return (~(srcb | srca) | srcc);
  348. case 0xac:
  349.     return ((srcb & ~srca) | (srcc & srca));
  350. case 0xad:
  351.     return ((srcb & ~srca) | (srcc ^ ~srca));
  352. case 0xae:
  353.     return (srcc | (srcb & ~srca));
  354. case 0xaf:
  355.     return (~srca | srcc);
  356. case 0xb0:
  357.     return (srca & (srcc | ~srcb));
  358. case 0xb1:
  359.     return (~(srcb | (~srca & srcc)) | (srcc & srca));
  360. case 0xb2:
  361.     return ((srcc & ~srcb) | (srca & (srcc | ~srcb)));
  362. case 0xb3:
  363.     return (~srcb | (srcc & srca));
  364. case 0xb4:
  365.     return (srca ^ (srcb & ~srcc));
  366. case 0xb5:
  367.     return ~((srcb | ~srca) & (srcc ^ srca));
  368. case 0xb6:
  369.     return ((srcc & srca) | (srcb ^ (srca | srcc)));
  370. case 0xb7:
  371.     return ~(srcb & (srcc ^ srca));
  372. case 0xb8:
  373.     return ((srcc & srcb) | (~srcb & srca));
  374. case 0xb9:
  375.     return ((~srcb & srca) | (srcc ^ ~srcb));
  376. case 0xba:
  377.     return (srcc | (~srcb & srca));
  378. case 0xbb:
  379.     return (~srcb | srcc);
  380. case 0xbc:
  381.     return ((srcc & srca) | (srcb ^ srca));
  382. case 0xbd:
  383.     return (~(srcc | srca) | (srcc & srca) | (srcb ^ srca));
  384. case 0xbe:
  385.     return (srcc | (srcb ^ srca));
  386. case 0xbf:
  387.     return (srcc | ~(srca & srcb));
  388. case 0xc0:
  389.     return (srcb & srca);
  390. case 0xc1:
  391.     return (~(srcc | srcb | srca) | (srcb & srca));
  392. case 0xc2:
  393.     return ((srcc & ~(srcb | srca)) | (srcb & srca));
  394. case 0xc3:
  395.     return ~(srcb ^ srca);
  396. case 0xc4:
  397.     return (srcb & (srca | ~srcc));
  398. case 0xc5:
  399.     return (~(srcc | srca) | (srcb & srca));
  400. case 0xc6:
  401.     return (srcb ^ (~srca & srcc));
  402. case 0xc7:
  403.     return ~((srcc | srca) & (srcb ^ srca));
  404. case 0xc8:
  405.     return (srcb & (srca | srcc));
  406. case 0xc9:
  407.     return ~(srcb ^ (srcc | srca));
  408. case 0xca:
  409.     return ((srcc & ~srca) | (srcb & srca));
  410. case 0xcb:
  411.     return ((srcc & ~srca) | (srcb ^ ~srca));
  412. case 0xcc:
  413.     return srcb;
  414. case 0xcd:
  415.     return (~(srcc | srca) | srcb);
  416. case 0xce:
  417.     return ((srcc & ~srca) | srcb);
  418. case 0xcf:
  419.     return (~srca | srcb);
  420. case 0xd0:
  421.     return (srca & (srcb | ~srcc));
  422. case 0xd1:
  423.     return (~(srcc | srcb) | (srcb & srca));
  424. case 0xd2:
  425.     return (srca ^ (~srcb & srcc));
  426. case 0xd3:
  427.     return ~((srcc | ~srca) & (srcb ^ srca));
  428. case 0xd4:
  429.     return ((~srcc & srcb) | (srca & (srcb | ~srcc)));
  430. case 0xd5:
  431.     return (~srcc | (srcb & srca));
  432. case 0xd6:
  433.     return ((srcb & srca) | (srcc ^ (srcb | srca)));
  434. case 0xd7:
  435.     return ~(srcc & (srcb ^ srca));
  436. case 0xd8:
  437.     return ((srcc & srcb) | (~srcc & srca));
  438. case 0xd9:
  439.     return ((srcb & srca) | ~(srcc ^ srcb));
  440. case 0xda:
  441.     return ((srcb & srca) | (srcc ^ srca));
  442. case 0xdb:
  443.     return (~(srcb | srca) | (srcb & srca) | (srcc ^ srca));
  444. case 0xdc:
  445.     return (srcb | (~srcc & srca));
  446. case 0xdd:
  447.     return (~srcc | srcb);
  448. case 0xde:
  449.     return (srcb | (srcc ^ srca));
  450. case 0xdf:
  451.     return (srcb | ~(srca & srcc));
  452. case 0xe0:
  453.     return (srca & (srcb | srcc));
  454. case 0xe1:
  455.     return ~(srca ^ (srcc | srcb));
  456. case 0xe2:
  457.     return ((srcc & ~srcb) | (srcb & srca));
  458. case 0xe3:
  459.     return ((srcc & srca) | ~(srcb ^ srca));
  460. case 0xe4:
  461.     return ((~srcc & srcb) | (srcc & srca));
  462. case 0xe5:
  463.     return ((srcb & srca) | ~(srcc ^ srca));
  464. case 0xe6:
  465.     return ((srcb & srca) | (srcc ^ srcb));
  466. case 0xe7:
  467.     return (~(srca | (srcc & srcb)) | (srca & (srcb | srcc)));
  468. case 0xe8:
  469.     return ((srcc & srcb) | (srca & (srcb | srcc)));
  470. case 0xe9:
  471.     return ((srcc & srcb) | ~(srca ^ (srcc | srcb)));
  472. case 0xea:
  473.     return (srcc | (srcb & srca));
  474. case 0xeb:
  475.     return (srcc | ~(srcb ^ srca));
  476. case 0xec:
  477.     return (srcb | (srcc & srca));
  478. case 0xed:
  479.     return (srcb | ~(srcc ^ srca));
  480. case 0xee:
  481.     return (srcc | srcb);
  482. case 0xef:
  483.     return (~srca | srcc | srcb);
  484. case 0xf0:
  485.     return srca;
  486. case 0xf1:
  487.     return (~(srcc | srcb) | srca);
  488. case 0xf2:
  489.     return ((srcc & ~srcb) | srca);
  490. case 0xf3:
  491.     return (~srcb | srca);
  492. case 0xf4:
  493.     return ((~srcc & srcb) | srca);
  494. case 0xf5:
  495.     return (~srcc | srca);
  496. case 0xf6:
  497.     return (srca | (srcc ^ srcb));
  498. case 0xf7:
  499.     return (srca | ~(srcb & srcc));
  500. case 0xf8:
  501.     return ((srcc & srcb) | srca);
  502. case 0xf9:
  503.     return (srca | ~(srcc ^ srcb));
  504. case 0xfa:
  505.     return (srcc | srca);
  506. case 0xfb:
  507.     return (~srcb | srcc | srca);
  508. case 0xfc:
  509.     return (srcb | srca);
  510. case 0xfd:
  511.     return (~srcc | srcb | srca);
  512. case 0xfe:
  513.     return (srcc | srcb | srca);
  514. case 0xff:
  515.     return 0xFFFFFFFF;
  516. }
  517. return 0;
  518. }
  519.